﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using WTwitter.Model.UserData;

namespace WTwitter.Model.Framework {
	public interface IUser : IEquatable<IUser> {
		long? Id { get; }

		/// <summary>
		/// ユーザー名(twitterではユーザーのID)
		/// </summary>
		string ScreenName { get; }

		/// <summary>
		/// ユーザーの本名？
		/// ※入力ソースがScreenNameとNameのような２種ない場合は両方に同じ値を入れる
		/// </summary>
		string Name { get; }

		/// <summary>
		/// 投稿したユーザのタイムラインを表示するURL
		/// </summary>
		string UserUrl { get; }
 
		/// <summary>
		/// ユーザーの説明文
		/// </summary>
		string Description { get;}

		/// <summary>
		/// ユーザーのプロフィール画像
		/// </summary>
		string ProfileImageUrl { get; }

		/// <summary>
		/// このユーザーがフォローしているIDのリスト
		/// 事前にLoadFollowingIds()を呼び出すまではnullになっている
		/// 最新のFollowingIdsを調べたいときは再度LoadFollowingIdsを呼び出す
		/// </summary>
		List<long> FollowingIds { get; }

		void LoadFollowingIds(AuthInfo info);

		/// <summary>
		/// このユーザーをフォローしているIDのリスト
		/// 事前にLoadFollowersIds()を呼び出すまではnullになっている
		/// 最新のFollowersIdsを調べたいときは再度LoadFollowersIdsを呼び出す
		/// </summary>
		List<long> FollowersIds { get; }

		void LoadFollowersIds(AuthInfo info);

		//TODO これ以下のプロパティはなくす予定

		/// <summary>
		/// このユーザーと友達（相互フォロー）かどうか
		/// </summary>
		bool IsFriend { get; }

		/// <summary>
		/// このユーザーをFollowしているかどうか
		/// </summary>
		bool IsFollowing { get; }

		/// <summary>
		/// このユーザーからFollowされているかどうか
		/// </summary>
		bool IsFollowed { get; }

	}
}
